package usbcali.edu.co.pqrs.presentation.backingBeans;

import java.io.Serializable;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import org.primefaces.component.calendar.Calendar;
import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.component.selectoneradio.SelectOneRadio;
import org.primefaces.context.RequestContext;
import org.primefaces.event.RowEditEvent;
import org.primefaces.model.DualListModel;

import usbcali.edu.co.pqrs.exceptions.ZMessManager;
import usbcali.edu.co.pqrs.modelo.AnexosPqr;
import usbcali.edu.co.pqrs.modelo.MotivoReclamacion;
import usbcali.edu.co.pqrs.modelo.MotivoSolicitud;
import usbcali.edu.co.pqrs.modelo.TipoSolicitudPqr;
import usbcali.edu.co.pqrs.modelo.dto.AnxsXTpSolDTO;
import usbcali.edu.co.pqrs.modelo.dto.MotReclXTpSolDTO;
import usbcali.edu.co.pqrs.modelo.dto.MotSolXTpSolDTO;
import usbcali.edu.co.pqrs.modelo.dto.TipoSolicitudPqrDTO;
import usbcali.edu.co.pqrs.presentation.businessDelegate.IBusinessDelegatorView;
import usbcali.edu.co.pqrs.presentation.dataModel.TipoSolicitudDataModel;
import usbcali.edu.co.pqrs.utilities.FacesUtils;

/**
 * @author Zathura Code Generator http://code.google.com/p/zathura
 * 
 */
@ManagedBean
@ViewScoped
public class TipoSolicitudPqrView implements Serializable {
	private static final long serialVersionUID = 1L;
	private InputText txtDescTpSol;
	private DualListModel<MotivoSolicitud> motivoSolicitud;
	private DualListModel<MotivoReclamacion> motivoReclamacion;
	private DualListModel<AnexosPqr> anexos;
	private SelectOneRadio txtEstadoRegistro;
	private InputText txtUsuarioCreador;
	private InputText txtUsuarioUltimaModificacion;
	private InputText txtIdTpSolPqr;
	private Calendar txtFechaCreacion;
	private Calendar txtFechaUltimaModificacion;
	private CommandButton btnSave;
	private CommandButton btnModify;
	private CommandButton btnDelete;
	private CommandButton btnClear;
	private CommandButton btnCrear;
	private List<TipoSolicitudPqrDTO> data;
	private TipoSolicitudPqrDTO selectedTipoSolicitudPqr;
	private TipoSolicitudPqr entity;
	private boolean showDialog;
	private int selectedOneRadioEstadoRegistro = 1;
	private TipoSolicitudDataModel tipoDataModel;

	List<MotivoReclamacion> motivoReclamacionSource = new ArrayList<MotivoReclamacion>();
	List<MotivoReclamacion> motivoReclamacionTarget = new ArrayList<MotivoReclamacion>();

	@ManagedProperty(value = "#{BusinessDelegatorView}")
	private IBusinessDelegatorView businessDelegatorView;


	public String crear() {

		txtDescTpSol.setDisabled(false);
		txtDescTpSol.setValue(null);
		txtEstadoRegistro.setDisabled(false);
		txtEstadoRegistro.setValue(null);
		
		btnSave.setDisabled(false);
		btnCrear.setDisabled(true);
		
		init();

		return "";
	}
	
	public void cerrar() {
		txtDescTpSol.setDisabled(true);
		txtEstadoRegistro.setDisabled(true);

		if (btnCrear.isDisabled()) {
			txtDescTpSol.setValue("");
			txtEstadoRegistro.setValue("");
		}

		btnSave.setDisabled(true);
		btnModify.setDisabled(false);
		btnCrear.setDisabled(false);
	}

	public String editar() {

		try {
			txtDescTpSol.setValue(selectedTipoSolicitudPqr
					.getDescTpSol());
			txtEstadoRegistro.setValue(selectedTipoSolicitudPqr.getEstadoRegistro());

			List<AnxsXTpSolDTO> anexosS=businessDelegatorView.anexosXIdTipoSolicitud(selectedTipoSolicitudPqr.getIdTpSolPqr());
			
			List<AnexosPqr> anexosSource = new ArrayList<AnexosPqr>();
			List<AnexosPqr> anexosTarget = new ArrayList<AnexosPqr>();
			anexosSource = businessDelegatorView.getAnexosPqr();
			
			if(anexosS.size()!=0){
			
			for (int i = 0; i < anexosSource.size(); i++) {
				for (int j = 0; j < anexosS.size(); j++) {
					if(anexosSource.get(i).getIdAnexoPqr().toString().
							equals(anexosS.get(j).getIdAnexoPqr_AnexosPqr()+"")){
						anexosTarget.add(anexosSource.get(i));
						anexosSource.remove(i);
						anexosS.remove(j);
						j--;
					}
				}
			}
			}

			anexos = new DualListModel<AnexosPqr>(anexosSource, anexosTarget);
			
			
            List<MotSolXTpSolDTO> motS=businessDelegatorView.motSolXIdTipoSolicitud(selectedTipoSolicitudPqr.getIdTpSolPqr());
			
         	List<MotivoSolicitud> motivoSolicitudSource = new ArrayList<MotivoSolicitud>();
         	List<MotivoSolicitud> motivoSolicitudTarget = new ArrayList<MotivoSolicitud>();
         	motivoSolicitudSource = businessDelegatorView.getMotivoSolicitud();
			
         	if(motS.size()!=0){
			for (int i = 0; i < motivoSolicitudSource.size(); i++) {
				for (int j = 0; j < motS.size(); j++) {
					if(motivoSolicitudSource.get(i).getIdMotSol().toString().
							equals(motS.get(j).getIdMotSol_MotivoSolicitud()+"")){
						motivoSolicitudTarget.add(motivoSolicitudSource.get(i));
						motivoSolicitudSource.remove(i);
						motS.remove(j);
						j--;
					}
				}
			}
         	}

			motivoSolicitud = new DualListModel<MotivoSolicitud>(motivoSolicitudSource, motivoSolicitudTarget);
			
			 List<MotReclXTpSolDTO> motR=businessDelegatorView.motReclXIdTipoSolicitud(selectedTipoSolicitudPqr.getIdTpSolPqr());
			
			List<MotivoReclamacion> motivoReclamacionSource = new ArrayList<MotivoReclamacion>();
			List<MotivoReclamacion> motivoReclamacionTarget = new ArrayList<MotivoReclamacion>();
			motivoReclamacionSource = businessDelegatorView.getMotivoReclamacion();
			
			if(motR.size()!=0){
			for (int i = 0; i < motivoReclamacionSource.size(); i++) {
				for (int j = 0; j < motR.size(); j++) {
					if(motivoReclamacionSource.get(i).getIdMotRecl().toString().
							equals(motR.get(j).getIdMotRecl_MotivoReclamacion()+"")){
						motivoReclamacionTarget.add(motivoReclamacionSource.get(i));
						motivoReclamacionSource.remove(i);
						motR.remove(j);
						j--;
					}
				}
			}
		}
			
			motivoReclamacion = new DualListModel<MotivoReclamacion>(motivoReclamacionSource, motivoReclamacionTarget);
			
			modificar();

		} catch (Exception e) {
			if (selectedTipoSolicitudPqr == null) {
				btnCrear.setDisabled(true);
				cerrar();
				FacesUtils
						.addErrorMessage("Seleccione un Tipo de Solicitud para modificar");
			}else{
				System.out.println(e.getMessage());
			}
		}
		return "";
	}

	public String modificar() {

		txtDescTpSol.setDisabled(false);
		txtEstadoRegistro.setDisabled(false);

		btnSave.setDisabled(false);
		btnModify.setDisabled(true);

		return "";
	}
	
	public String guardarTipoSolicitud(){
		
		int cont=0;
		
		if(anexos.getTarget().size()>=1){
			cont++;
		}
		
		if(motivoSolicitud.getTarget().size()>=1){
			cont++;
		}
		
		if(motivoReclamacion.getTarget().size()>=1){
			cont++;
		}
		
		if(cont==0){
			
			FacesUtils.addErrorMessage("Seleccione un Motivo de Solicitud de Reclamo o de Anexo");
			return "";
		}
		
		TipoSolicitudPqr tipoSolicitudPqr =new TipoSolicitudPqr();
		
			tipoSolicitudPqr.setEstadoRegistro(FacesUtils.checkString(txtEstadoRegistro));	
		
		try {
		tipoSolicitudPqr.setDescTpSol(FacesUtils.checkString(txtDescTpSol));
		tipoSolicitudPqr.setFechaCreacion(new Date());
		tipoSolicitudPqr.setFechaUltimaModificacion(new Date());
		tipoSolicitudPqr.setUsuarioCreador(FacesUtils.login());
		tipoSolicitudPqr.setUsuarioUltimaModificacion(FacesUtils.login());
		
			businessDelegatorView.guardarTipoSolicitud(tipoSolicitudPqr, anexos.getTarget(), motivoReclamacion.getTarget(), motivoSolicitud.getTarget());
			
            cerrar();
			
			data = businessDelegatorView.getDataTipoSolicitudPqr();
			
			tipoDataModel = new TipoSolicitudDataModel(data);
			RequestContext.getCurrentInstance().execute(
					"PF('singleCarDialog').hide()");
			RequestContext.getCurrentInstance().update("form:tabla");
			FacesUtils.addInfoMessage("Tipo de solicitud guardado ");
		} catch (Exception e) {
			FacesUtils.addErrorMessage(e.getMessage());
		}
		
		return "";
	}

	@PostConstruct
	public void init() {

		try {
			// Anexos
			List<AnexosPqr> anexosSource = new ArrayList<AnexosPqr>();
			List<AnexosPqr> anexosSource2 = new ArrayList<AnexosPqr>();
			List<AnexosPqr> anexosTarget = new ArrayList<AnexosPqr>();
			anexosSource = businessDelegatorView.getAnexosPqr();
			
		

			// MotivoSolicitud
			List<MotivoSolicitud> motivoSolicitudSource = new ArrayList<MotivoSolicitud>();
			List<MotivoSolicitud> motivoSolicitudSource2 = new ArrayList<MotivoSolicitud>();
			List<MotivoSolicitud> motivoSolicitudTarget = new ArrayList<MotivoSolicitud>();

			motivoSolicitudSource = businessDelegatorView.getMotivoSolicitud();
			
			
			// MotivoReclamacion
			List<MotivoReclamacion> motivoReclamacionSource = new ArrayList<MotivoReclamacion>();
			List<MotivoReclamacion> motivoReclamacionSource2 = new ArrayList<MotivoReclamacion>();
			List<MotivoReclamacion> motivoReclamacionTarget = new ArrayList<MotivoReclamacion>();
			motivoReclamacionSource = businessDelegatorView.getMotivoReclamacion();
			
			
			
			for (int i = 0; i < anexosSource.size(); i++) {
				if(anexosSource.get(i).getEstadoRegistro().equals("A")){
					anexosSource2.add(anexosSource.get(i));
				}
			}

			anexos = new DualListModel<AnexosPqr>(anexosSource2, anexosTarget);
			for (int i = 0; i < motivoSolicitudSource.size(); i++) {
				if(motivoSolicitudSource.get(i).getEstadoRegistro().equals("A")){
					motivoSolicitudSource2.add(motivoSolicitudSource.get(i));
				}
			}
			
			motivoSolicitud = new DualListModel<MotivoSolicitud>(motivoSolicitudSource2, motivoSolicitudTarget);
			for (int i = 0; i < motivoReclamacionSource.size(); i++) {
				if(motivoReclamacionSource.get(i).getEstadoRegistro().equals("A")){
					motivoReclamacionSource2.add(motivoReclamacionSource.get(i));
				}
			}
			
			motivoReclamacion = new DualListModel<MotivoReclamacion>(motivoReclamacionSource2, motivoReclamacionTarget);

			
		} catch (Exception e) {

		}

	}
	
	
	public String action_modify() {
		try {

			if (btnCrear.isDisabled()) {
				guardarTipoSolicitud();

				return "";
			}


			int cont=0;
			
			if(anexos.getTarget().size()>=1){
				cont++;
			}
			
			if(motivoSolicitud.getTarget().size()>=1){
				cont++;
			}
			
			if(motivoReclamacion.getTarget().size()>=1){
				cont++;
			}
			
			if(cont==0){
				
				FacesUtils.addErrorMessage("Seleccione un Motivo de Solicitud de Reclamo o de Anexo");
				return "";
			}
			
			
			Long idTpSolPqr = new Long(selectedTipoSolicitudPqr.getIdTpSolPqr());
			
			entity = businessDelegatorView.getTipoSolicitudPqr(idTpSolPqr);
			entity.setDescTpSol(FacesUtils.checkString(txtDescTpSol));
			entity.setEstadoRegistro(FacesUtils.checkString(txtEstadoRegistro));
			entity.setFechaUltimaModificacion(new Date());
			entity.setUsuarioUltimaModificacion(FacesUtils.login());
			
			//metodo que guarlos los nuevos anexos y motivos, borra los que no estan seleccionados
			businessDelegatorView.modificarTipoSolicitud(entity, anexos.getTarget(), motivoReclamacion.getTarget(), motivoSolicitud.getTarget());
				
	            cerrar();
				
				data = businessDelegatorView.getDataTipoSolicitudPqr();
				
				tipoDataModel = new TipoSolicitudDataModel(data);
				RequestContext.getCurrentInstance().execute(
						"PF('singleCarDialog').hide()");
				RequestContext.getCurrentInstance().update("form:tabla");
				FacesUtils.addInfoMessage("Se modifico tipo de solicitud");
			
			
		} catch (Exception e) {
			//data = null;
			FacesUtils.addErrorMessage(e.getMessage());
		}

		return "";
	}
	

	public TipoSolicitudPqrView() {
		super();
	}
	
	public String action_create() {
		try {
			entity = new TipoSolicitudPqr();

			Long idTpSolPqr = FacesUtils.checkLong(txtIdTpSolPqr);

			entity.setDescTpSol(FacesUtils.checkString(txtDescTpSol));
			entity.setEstadoRegistro(FacesUtils.checkString(txtEstadoRegistro));
			entity.setFechaCreacion(FacesUtils.checkDate(txtFechaCreacion));
			entity.setFechaUltimaModificacion(FacesUtils
					.checkDate(txtFechaUltimaModificacion));
			entity.setIdTpSolPqr(idTpSolPqr);
			entity.setUsuarioCreador(FacesUtils.checkString(txtUsuarioCreador));
			entity.setUsuarioUltimaModificacion(FacesUtils
					.checkString(txtUsuarioUltimaModificacion));
			businessDelegatorView.saveTipoSolicitudPqr(entity);
			FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYSAVED);
			action_clear();
		} catch (Exception e) {
			entity = null;
			FacesUtils.addErrorMessage(e.getMessage());
		}

		return "";
	}

	public void rowEventListener(RowEditEvent e) {
		try {
			TipoSolicitudPqrDTO tipoSolicitudPqrDTO = (TipoSolicitudPqrDTO) e
					.getObject();

			if (txtDescTpSol == null) {
				txtDescTpSol = new InputText();
			}

			txtDescTpSol.setValue(tipoSolicitudPqrDTO.getDescTpSol());

			if (txtEstadoRegistro == null) {
				txtEstadoRegistro = new SelectOneRadio();
			}

			txtEstadoRegistro.setValue(tipoSolicitudPqrDTO.getEstadoRegistro());

			if (txtUsuarioCreador == null) {
				txtUsuarioCreador = new InputText();
			}

			txtUsuarioCreador.setValue(tipoSolicitudPqrDTO.getUsuarioCreador());

			if (txtUsuarioUltimaModificacion == null) {
				txtUsuarioUltimaModificacion = new InputText();
			}

			txtUsuarioUltimaModificacion.setValue(tipoSolicitudPqrDTO
					.getUsuarioUltimaModificacion());

			if (txtIdTpSolPqr == null) {
				txtIdTpSolPqr = new InputText();
			}

			txtIdTpSolPqr.setValue(tipoSolicitudPqrDTO.getIdTpSolPqr());

			if (txtFechaCreacion == null) {
				txtFechaCreacion = new Calendar();
			}

			txtFechaCreacion.setValue(tipoSolicitudPqrDTO.getFechaCreacion());

			if (txtFechaUltimaModificacion == null) {
				txtFechaUltimaModificacion = new Calendar();
			}

			txtFechaUltimaModificacion.setValue(tipoSolicitudPqrDTO
					.getFechaUltimaModificacion());

			Long idTpSolPqr = FacesUtils.checkLong(txtIdTpSolPqr);
			entity = businessDelegatorView.getTipoSolicitudPqr(idTpSolPqr);

			action_modify();
		} catch (Exception ex) {
		}
	}

	public String action_new() {
		action_clear();
		selectedTipoSolicitudPqr = null;
		setShowDialog(true);

		return "";
	}

	public String limpiar() {

		entity = null;
		selectedTipoSolicitudPqr = null;
		selectedOneRadioEstadoRegistro = 0;

		if (txtDescTpSol != null) {
			txtDescTpSol.setValue(null);
			txtDescTpSol.setDisabled(false);
		}
		btnSave.setDisabled(false);
		btnModify.setDisabled(true);
		return "";

	}

	public void listener_modificar() {
		try {
			Long idATpSolPqr = new Long(
					selectedTipoSolicitudPqr.getIdTpSolPqr());
			entity = businessDelegatorView.getTipoSolicitudPqr(idATpSolPqr);
		} catch (Exception e) {
			// TODO: handle exception
		}

		if (entity.getEstadoRegistro().equals("A")) {
			selectedOneRadioEstadoRegistro = 1;
		} else {
			selectedOneRadioEstadoRegistro = 2;
		}
		txtDescTpSol.setValue(entity.getDescTpSol());
		txtDescTpSol.setDisabled(false);

		btnSave.setDisabled(true);
		btnModify.setDisabled(false);
	}

	public String action_clear() {
		entity = null;
		selectedTipoSolicitudPqr = null;

		if (txtDescTpSol != null) {
			txtDescTpSol.setValue(null);
			txtDescTpSol.setDisabled(true);
		}

		if (txtEstadoRegistro != null) {
			txtEstadoRegistro.setValue(null);
			txtEstadoRegistro.setDisabled(true);
		}

		if (txtUsuarioCreador != null) {
			txtUsuarioCreador.setValue(null);
			txtUsuarioCreador.setDisabled(true);
		}

		if (txtUsuarioUltimaModificacion != null) {
			txtUsuarioUltimaModificacion.setValue(null);
			txtUsuarioUltimaModificacion.setDisabled(true);
		}

		if (txtFechaCreacion != null) {
			txtFechaCreacion.setValue(null);
			txtFechaCreacion.setDisabled(true);
		}

		if (txtFechaUltimaModificacion != null) {
			txtFechaUltimaModificacion.setValue(null);
			txtFechaUltimaModificacion.setDisabled(true);
		}

		if (txtIdTpSolPqr != null) {
			txtIdTpSolPqr.setValue(null);
			txtIdTpSolPqr.setDisabled(false);
		}

		if (btnSave != null) {
			btnSave.setDisabled(true);
		}

		if (btnDelete != null) {
			btnDelete.setDisabled(true);
		}

		return "";
	}

	public void listener_txtFechaCreacion() {
		Date inputDate = (Date) txtFechaCreacion.getValue();
		DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
		FacesContext.getCurrentInstance().addMessage(
				"",
				new FacesMessage("Selected Date "
						+ dateFormat.format(inputDate)));
	}

	public void listener_txtFechaUltimaModificacion() {
		Date inputDate = (Date) txtFechaUltimaModificacion.getValue();
		DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
		FacesContext.getCurrentInstance().addMessage(
				"",
				new FacesMessage("Selected Date "
						+ dateFormat.format(inputDate)));
	}

	public void listener_txtId() {
		try {
			Long idTpSolPqr = FacesUtils.checkLong(txtIdTpSolPqr);
			entity = (idTpSolPqr != null) ? businessDelegatorView
					.getTipoSolicitudPqr(idTpSolPqr) : null;
		} catch (Exception e) {
			entity = null;
		}

		if (entity == null) {
			txtDescTpSol.setDisabled(false);
			txtEstadoRegistro.setDisabled(false);
			txtUsuarioCreador.setDisabled(false);
			txtUsuarioUltimaModificacion.setDisabled(false);
			txtFechaCreacion.setDisabled(false);
			txtFechaUltimaModificacion.setDisabled(false);
			txtIdTpSolPqr.setDisabled(false);
			btnSave.setDisabled(false);
		} else {
			txtDescTpSol.setValue(entity.getDescTpSol());
			txtDescTpSol.setDisabled(false);
			txtEstadoRegistro.setValue(entity.getEstadoRegistro());
			txtEstadoRegistro.setDisabled(false);
			txtFechaCreacion.setValue(entity.getFechaCreacion());
			txtFechaCreacion.setDisabled(false);
			txtFechaUltimaModificacion.setValue(entity
					.getFechaUltimaModificacion());
			txtFechaUltimaModificacion.setDisabled(false);
			txtUsuarioCreador.setValue(entity.getUsuarioCreador());
			txtUsuarioCreador.setDisabled(false);
			txtUsuarioUltimaModificacion.setValue(entity
					.getUsuarioUltimaModificacion());
			txtUsuarioUltimaModificacion.setDisabled(false);
			txtIdTpSolPqr.setValue(entity.getIdTpSolPqr());
			txtIdTpSolPqr.setDisabled(true);
			btnSave.setDisabled(false);

			if (btnDelete != null) {
				btnDelete.setDisabled(false);
			}
		}
	}

	public String action_edit(ActionEvent evt) {
		selectedTipoSolicitudPqr = (TipoSolicitudPqrDTO) (evt.getComponent()
				.getAttributes().get("selectedTipoSolicitudPqr"));
		txtDescTpSol.setValue(selectedTipoSolicitudPqr.getDescTpSol());
		txtDescTpSol.setDisabled(false);
		txtEstadoRegistro
				.setValue(selectedTipoSolicitudPqr.getEstadoRegistro());
		txtEstadoRegistro.setDisabled(false);
		txtFechaCreacion.setValue(selectedTipoSolicitudPqr.getFechaCreacion());
		txtFechaCreacion.setDisabled(false);
		txtFechaUltimaModificacion.setValue(selectedTipoSolicitudPqr
				.getFechaUltimaModificacion());
		txtFechaUltimaModificacion.setDisabled(false);
		txtUsuarioCreador
				.setValue(selectedTipoSolicitudPqr.getUsuarioCreador());
		txtUsuarioCreador.setDisabled(false);
		txtUsuarioUltimaModificacion.setValue(selectedTipoSolicitudPqr
				.getUsuarioUltimaModificacion());
		txtUsuarioUltimaModificacion.setDisabled(false);
		txtIdTpSolPqr.setValue(selectedTipoSolicitudPqr.getIdTpSolPqr());
		txtIdTpSolPqr.setDisabled(true);
		btnSave.setDisabled(false);
		setShowDialog(true);

		return "";
	}

	public String action_save() {
		try {
			if ((selectedTipoSolicitudPqr == null) && (entity == null)) {
				action_create();
			} else {
				action_modify();
			}

			data = null;
		} catch (Exception e) {
			FacesUtils.addErrorMessage(e.getMessage());
		}

		return "";
	}

	

	public String action_delete_datatable(ActionEvent evt) {
		try {
			selectedTipoSolicitudPqr = (TipoSolicitudPqrDTO) (evt
					.getComponent().getAttributes()
					.get("selectedTipoSolicitudPqr"));

			Long idTpSolPqr = new Long(selectedTipoSolicitudPqr.getIdTpSolPqr());
			entity = businessDelegatorView.getTipoSolicitudPqr(idTpSolPqr);
			action_delete();
		} catch (Exception e) {
			FacesUtils.addErrorMessage(e.getMessage());
		}

		return "";
	}

	public String action_delete_master() {
		try {
			Long idTpSolPqr = FacesUtils.checkLong(txtIdTpSolPqr);
			entity = businessDelegatorView.getTipoSolicitudPqr(idTpSolPqr);
			action_delete();
		} catch (Exception e) {
			FacesUtils.addErrorMessage(e.getMessage());
		}

		return "";
	}

	public void action_delete() throws Exception {
		try {
			businessDelegatorView.deleteTipoSolicitudPqr(entity);
			FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYDELETED);
			action_clear();
			data = null;
		} catch (Exception e) {
			throw e;
		}
	}

	public String action_closeDialog() {
		setShowDialog(false);
		action_clear();

		return "";
	}

	public String actionDeleteDataTableEditable(ActionEvent evt) {
		try {
			selectedTipoSolicitudPqr = (TipoSolicitudPqrDTO) (evt
					.getComponent().getAttributes()
					.get("selectedTipoSolicitudPqr"));

			Long idTpSolPqr = new Long(selectedTipoSolicitudPqr.getIdTpSolPqr());
			entity = businessDelegatorView.getTipoSolicitudPqr(idTpSolPqr);
			businessDelegatorView.deleteTipoSolicitudPqr(entity);
			data.remove(selectedTipoSolicitudPqr);
			FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYDELETED);
			action_clear();
		} catch (Exception e) {
			FacesUtils.addErrorMessage(e.getMessage());
		}

		return "";
	}

	public String action_modifyWitDTO(String descTpSol, String estadoRegistro,
			Date fechaCreacion, Date fechaUltimaModificacion, Long idTpSolPqr,
			String usuarioCreador, String usuarioUltimaModificacion)
			throws Exception {
		try {
			entity.setDescTpSol(FacesUtils.checkString(descTpSol));
			entity.setEstadoRegistro(FacesUtils.checkString(estadoRegistro));
			entity.setFechaCreacion(FacesUtils.checkDate(fechaCreacion));
			entity.setFechaUltimaModificacion(FacesUtils
					.checkDate(fechaUltimaModificacion));
			entity.setUsuarioCreador(FacesUtils.checkString(usuarioCreador));
			entity.setUsuarioUltimaModificacion(FacesUtils
					.checkString(usuarioUltimaModificacion));
			businessDelegatorView.updateTipoSolicitudPqr(entity);
			FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYMODIFIED);
		} catch (Exception e) {
			FacesUtils.addErrorMessage(e.getMessage());
			throw e;
		}

		return "";
	}

	public InputText getTxtDescTpSol() {
		return txtDescTpSol;
	}

	public void setTxtDescTpSol(InputText txtDescTpSol) {
		this.txtDescTpSol = txtDescTpSol;
	}

	public SelectOneRadio getTxtEstadoRegistro() {
		return txtEstadoRegistro;
	}

	public void setTxtEstadoRegistro(SelectOneRadio txtEstadoRegistro) {
		this.txtEstadoRegistro = txtEstadoRegistro;
	}

	public InputText getTxtUsuarioCreador() {
		return txtUsuarioCreador;
	}

	public void setTxtUsuarioCreador(InputText txtUsuarioCreador) {
		this.txtUsuarioCreador = txtUsuarioCreador;
	}

	public InputText getTxtUsuarioUltimaModificacion() {
		return txtUsuarioUltimaModificacion;
	}

	public void setTxtUsuarioUltimaModificacion(
			InputText txtUsuarioUltimaModificacion) {
		this.txtUsuarioUltimaModificacion = txtUsuarioUltimaModificacion;
	}

	public Calendar getTxtFechaCreacion() {
		return txtFechaCreacion;
	}

	public void setTxtFechaCreacion(Calendar txtFechaCreacion) {
		this.txtFechaCreacion = txtFechaCreacion;
	}

	public Calendar getTxtFechaUltimaModificacion() {
		return txtFechaUltimaModificacion;
	}

	public void setTxtFechaUltimaModificacion(
			Calendar txtFechaUltimaModificacion) {
		this.txtFechaUltimaModificacion = txtFechaUltimaModificacion;
	}

	public InputText getTxtIdTpSolPqr() {
		return txtIdTpSolPqr;
	}

	public void setTxtIdTpSolPqr(InputText txtIdTpSolPqr) {
		this.txtIdTpSolPqr = txtIdTpSolPqr;
	}

	public List<TipoSolicitudPqrDTO> getData() {
		try {
			if (data == null) {
				data = businessDelegatorView.getDataTipoSolicitudPqr();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

		return data;
	}

	public void setData(List<TipoSolicitudPqrDTO> tipoSolicitudPqrDTO) {
		this.data = tipoSolicitudPqrDTO;
	}

	public TipoSolicitudPqrDTO getSelectedTipoSolicitudPqr() {
    	if(selectedTipoSolicitudPqr==null){
    		try {
    			selectedTipoSolicitudPqr=getData().get(0);
			} catch (Exception e) {
			} 
    	}
		return selectedTipoSolicitudPqr;
	}

	public void setSelectedTipoSolicitudPqr(TipoSolicitudPqrDTO tipoSolicitudPqr) {
		this.selectedTipoSolicitudPqr = tipoSolicitudPqr;
	}

	public CommandButton getBtnSave() {
		return btnSave;
	}

	public void setBtnSave(CommandButton btnSave) {
		this.btnSave = btnSave;
	}

	public CommandButton getBtnModify() {
		return btnModify;
	}

	public void setBtnModify(CommandButton btnModify) {
		this.btnModify = btnModify;
	}

	public CommandButton getBtnDelete() {
		return btnDelete;
	}

	public void setBtnDelete(CommandButton btnDelete) {
		this.btnDelete = btnDelete;
	}

	public CommandButton getBtnClear() {
		return btnClear;
	}

	public void setBtnClear(CommandButton btnClear) {
		this.btnClear = btnClear;
	}

	public TimeZone getTimeZone() {
		return java.util.TimeZone.getDefault();
	}

	public IBusinessDelegatorView getBusinessDelegatorView() {
		return businessDelegatorView;
	}

	public void setBusinessDelegatorView(
			IBusinessDelegatorView businessDelegatorView) {
		this.businessDelegatorView = businessDelegatorView;
	}

	public boolean isShowDialog() {
		return showDialog;
	}

	public void setShowDialog(boolean showDialog) {
		this.showDialog = showDialog;
	}

	public int getSelectedOneRadioEstadoRegistro() {
		return selectedOneRadioEstadoRegistro;
	}

	public void setSelectedOneRadioEstadoRegistro(
			int selectedOneRadioEstadoRegistro) {
		this.selectedOneRadioEstadoRegistro = selectedOneRadioEstadoRegistro;
	}

	public DualListModel<MotivoSolicitud> getMotivoSolicitud() {
		return motivoSolicitud;
	}

	public void setMotivoSolicitud(DualListModel<MotivoSolicitud> motivoSolicitud) {
		this.motivoSolicitud = motivoSolicitud;
	}

	public DualListModel<MotivoReclamacion> getMotivoReclamacion() {
		return motivoReclamacion;
	}

	public void setMotivoReclamacion(
			DualListModel<MotivoReclamacion> motivoReclamacion) {
		this.motivoReclamacion = motivoReclamacion;
	}

	public DualListModel<AnexosPqr> getAnexos() {
		return anexos;
	}

	public void setAnexos(DualListModel<AnexosPqr> anexos) {
		this.anexos = anexos;
	}

	public CommandButton getBtnCrear() {
		return btnCrear;
	}

	public void setBtnCrear(CommandButton btnCrear) {
		this.btnCrear = btnCrear;
	}

	public TipoSolicitudDataModel getTipoDataModel() {
		tipoDataModel=new TipoSolicitudDataModel(getData());		
		return tipoDataModel;
	}

	public void setTipoDataModel(TipoSolicitudDataModel tipoDataModel) {
		this.tipoDataModel = tipoDataModel;
	}
	
	
	
}
